export default {
  namespaced: true,
  state: {
    token: uni.getStorageSync('token'),
    userInfo: uni.getStorageSync('userInfo') || {},
    // uni.getStorageSync方法，默认就会帮助你执行JSON.parse解析，如果出错就直接返回读取数据
  },
  mutations: {
    // 设置token
    setToken(state, data) {
      // 设置在state
      state.token = data
      // 设置给本地
      uni.setStorageSync('token', data)
    },
    // 设置用户资料
    setUserInfo(state, data) {
      // 设置在state
      state.userInfo = data
      // 设置给本地
      uni.setStorageSync('userInfo', data)
    }
  },
  actions: {
    // 微信登录
    async wxLoginAction(context) {
      // 调用uni.login(不支持async await)获取到登录凭证code
      uni.login({
        success: async res => {
          console.log(res);
          // res.code就是登录凭证，只需要将code提交给服务器端即可
          console.log(res.code);
          let result = await uni.$http.post('/auth/loginByWeixin', {
            code: res.code
          })
          console.log(result);
          // 存储token
          context.commit('setToken', result.token)
          // 获取一下用户的资料【需要携带token的，但是我们的请求拦截器已经写好了配置】
          let result2 = await uni.$http.get('/user/profile')
          console.log(result2);
          // 存储用户资料
          context.commit('setUserInfo', result2)
          // 获取购物车数据  【兄弟模块调用】
          context.dispatch('cart/getInitData', null, {
            root: true
          })
        },
        fail: err => {
          console.log(err);
        }
      })
    }
  }
}
